package ae.pcfc.etks.cld.to.web.model;

import java.util.Date;

import javax.validation.constraints.Future;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.format.annotation.DateTimeFormat;

import ae.pcfc.etks.cld.to.web.Constants;
import ae.pcfc.etks.cld.to.web.constraints.DateOfBirth;
import ae.pcfc.etks.cld.to.web.constraints.PassportExpiry;

/**
 * Employment Visa , Model bean , a sort of generic bean which may
 * be used for all the Visa related flow of information
 * @author Abed
 *
 */
public class EmploymentVisaLicenseInfo extends BaseModel {
	//Employee Details
	
	private String gsEmpStatus;
	private String wfStatus;
	private String strPostNo;

	@NotNull
	private String employeeType;
	
	@NotEmpty
	@Size(max = 50)
	private String strNameInPassport;
	
	private String strVisaType = "Employment Visa";
	
	@NotEmpty
	@Size(max = 30)
	private String strOriginCity;

	
	private Long salary;

	
	@NotEmpty
	@Size(max = 10)
	private String strFoodAllowance;
	@Size(max = 20)
	private String strAccommodationStatus;
	
	@NotNull
	private String jobCode;
	
	@NotEmpty
	@Size(max = 10)
	private String strPriority;
	
	@NotEmpty
	@Size(max = 10)
	private String strGender;
	
	@NotEmpty
	@Size(max = 30)
	private String strMedicalType;
	
	@NotEmpty
	@Size(max = 10)
	private String strIDCardFlag;
	
	@NotEmpty
	@Size(max = 15)
	private String strEmployeeStatus = "V";

	@NotNull
	private Integer employeeSource;
	
	@NotNull
	private Integer rpPeriod = 3;

	@Size(max = 10)
	private String strEntryPermitCollectionMethod;
	
	private Long airFare;
	
	@NotEmpty
	@Size(max = 10)
	private String strOtherAllowance;
	
	@NotEmpty
	@Size(max = 10)
	private String strAccommodationAllowance;
	
	@NotEmpty
	@Size(max = 10)
	private String strTransportation;
	
	@NotEmpty
	@Size(max = 20)
	private String strNationality;
	
	@NotEmpty
	@Size(max = 15)
	private String strReligion;
	
	@NotEmpty
	@Size(max = 10)
	private String strMaritalStatus;
	
	@NotEmpty
	@Size(max = 10)
	private String strBankGuranteeFlag = "Y";
	
	//Passport Details
	@Size(max = 20)
	@NotEmpty
	private String strPassportNo;
	
	@NotEmpty
	@Size(max = 20)
	private String strCountryOfIssue;
	
	@DateTimeFormat(pattern="dd/MM/yyyy") 
	@Past
	private Date issueDate;
	
	@Size(max = 10)
	private String strPassportStatus;
	
	@Size(max = 30)
	@NotEmpty
	private String strCityOfIssue;
	
	@DateTimeFormat(pattern="dd/MM/yyyy") 
	@Future
	@PassportExpiry
	private Date expiryDate;
	
	//Personal Details
	@Size(max = 30)
	private String strFamilyName;
	
	@NotEmpty
	@Size(max = 30)
	private String strFatherName;
	
	@NotEmpty
	@Size(max = 30)
	private String strMotherName;
	
	@Size(max = 30)
	private String strPreviousNationality;
	
	@DateTimeFormat(pattern="dd/MM/yyyy") 
	@Past
	@DateOfBirth
	private Date dateOfBirth;
	
	@NotEmpty
	@Size(max = 30)
	private String strBirthPlace;

	@NotNull
	private String qualification;
	
	@NotNull
	private String spokenLanguage1;
	
	private String spokenLanguage2;
	private String spokenLanguage3;

	
	//Address Details
	@NotEmpty
	@Size(max = 1)
	private String strCurentlyInUAE ;
	
	@Size(max = 15)
	private String strCurrentVisaType;
	
	@Size(max = 30)
	private String strCity;
	
	@Size(max = 20)
	private String strZone;
	
	@Size(max = 30)
	private String strBuilding;
	
	@Size(max = 15)
	@Pattern(regexp = Constants.TEL_REGEXP)
	private String strTelephoneOffice;
	
	@Size(max = 15)
	@Pattern(regexp = Constants.TEL_REGEXP)
	private String strTelephoneRisidence;
	
	@Size(max = 20)
	private String strEmirate;
	
	@Size(max = 20)
	private String strPOBox;
	
	@Size(max = 30)
	private String strStreet;
	
	@Size(max = 10)
	private String strFlatNO;
	
	@Size(max = 15)
	private String strTelephoneOfficeExtension;
	
	@NotEmpty
	@Size(max = 50)
	private String strAddressAbroad;
	
	//Comments
	@Size(max = 2000)
	private String adminComments;
	private String strStatus;
	
	//Added by asna for fetching the visa service
	private String visaService;
	private String visaCharges;
	private String totalCharges;
	private String bankGuarantee="3000";
	private String prepaidActAccount;
	private String prepaidResAccount;
	private String bankGuaranteeBalance;
	
	
	public String getStrPostNo() {
		return strPostNo;
	}
	public void setStrPostNo(String strPostNo) {
		this.strPostNo = strPostNo;
	}

	public String getEmployeeType() {
		return employeeType;
	}
	public void setEmployeeType(String employeeType) {
		this.employeeType = employeeType;
	}
	public String getStrNameInPassport() {
		return strNameInPassport;
	}
	public void setStrNameInPassport(String strNameInPassport) {
		this.strNameInPassport = strNameInPassport;
	}
	public String getStrVisaType() {
		return strVisaType;
	}
	public void setStrVisaType(String strVisaType) {
		this.strVisaType = strVisaType;
	}
	public String getStrOriginCity() {
		return strOriginCity;
	}
	public void setStrOriginCity(String strOriginCity) {
		this.strOriginCity = strOriginCity;
	}
	public Long getSalary() {
		return salary;
	}
	public void setSalary(Long salary) {
		this.salary = salary;
	}
	public String getStrFoodAllowance() {
		return strFoodAllowance;
	}
	public void setStrFoodAllowance(String strFoodAllowance) {
		this.strFoodAllowance = strFoodAllowance;
	}
	public String getStrAccommodationStatus() {
		return strAccommodationStatus;
	}
	public void setStrAccommodationStatus(String strAccommodationStatus) {
		this.strAccommodationStatus = strAccommodationStatus;
	}
	public String getJobCode() {
		return jobCode;
	}
	public void setJobCode(String jobCode) {
		this.jobCode = jobCode;
	}
	public String getStrPriority() {
		return strPriority;
	}
	public void setStrPriority(String strPriority) {
		this.strPriority = strPriority;
	}
	public String getStrGender() {
		return strGender;
	}
	public void setStrGender(String strGender) {
		this.strGender = strGender;
	}
	public String getStrMedicalType() {
		return strMedicalType;
	}
	public void setStrMedicalType(String strMedicalType) {
		this.strMedicalType = strMedicalType;
	}
	public String getStrIDCardFlag() {
		return strIDCardFlag;
	}
	public void setStrIDCardFlag(String strIDCardFlag) {
		this.strIDCardFlag = strIDCardFlag;
	}
	public String getStrEmployeeStatus() {
		return strEmployeeStatus;
	}
	public void setStrEmployeeStatus(String strEmployeeStatus) {
		this.strEmployeeStatus = strEmployeeStatus;
	}
	public Integer getEmployeeSource() {
		return employeeSource;
	}
	public void setEmployeeSource(Integer employeeSource) {
		this.employeeSource = employeeSource;
	}
	public Integer getRpPeriod() {
		return rpPeriod;
	}
	public void setRpPeriod(Integer rpPeriod) {
		this.rpPeriod = rpPeriod;
	}
	public String getStrEntryPermitCollectionMethod() {
		return strEntryPermitCollectionMethod;
	}
	public void setStrEntryPermitCollectionMethod(
			String strEntryPermitCollectionMethod) {
		this.strEntryPermitCollectionMethod = strEntryPermitCollectionMethod;
	}
	public Long getAirFare() {
		return airFare;
	}
	public void setAirFare(Long airFare) {
		this.airFare = airFare;
	}
	public String getStrOtherAllowance() {
		return strOtherAllowance;
	}
	public void setStrOtherAllowance(String strOtherAllowance) {
		this.strOtherAllowance = strOtherAllowance;
	}
	public String getStrAccommodationAllowance() {
		return strAccommodationAllowance;
	}
	public void setStrAccommodationAllowance(String strAccommodationAllowance) {
		this.strAccommodationAllowance = strAccommodationAllowance;
	}
	public String getStrTransportation() {
		return strTransportation;
	}
	public void setStrTransportation(String strTransportation) {
		this.strTransportation = strTransportation;
	}
	public String getStrNationality() {
		return strNationality;
	}
	public void setStrNationality(String strNationality) {
		this.strNationality = strNationality;
	}
	public String getStrReligion() {
		return strReligion;
	}
	public void setStrReligion(String strReligion) {
		this.strReligion = strReligion;
	}
	public String getStrMaritalStatus() {
		return strMaritalStatus;
	}
	public void setStrMaritalStatus(String strMaritalStatus) {
		this.strMaritalStatus = strMaritalStatus;
	}
	public String getStrBankGuranteeFlag() {
		return strBankGuranteeFlag;
	}
	public void setStrBankGuranteeFlag(String strBankGuranteeFlag) {
		this.strBankGuranteeFlag = strBankGuranteeFlag;
	}
	public String getStrPassportNo() {
		return strPassportNo;
	}
	public void setStrPassportNo(String strPassportNo) {
		this.strPassportNo = strPassportNo;
	}
	public String getStrCountryOfIssue() {
		return strCountryOfIssue;
	}
	public void setStrCountryOfIssue(String strCountryOfIssue) {
		this.strCountryOfIssue = strCountryOfIssue;
	}
	public Date getIssueDate() {
		return issueDate;
	}
	public void setIssueDate(Date issueDate) {
		this.issueDate = issueDate;
	}
	public String getStrPassportStatus() {
		return strPassportStatus;
	}
	public void setStrPassportStatus(String strPassportStatus) {
		this.strPassportStatus = strPassportStatus;
	}
	public String getStrCityOfIssue() {
		return strCityOfIssue;
	}
	public void setStrCityOfIssue(String strCityOfIssue) {
		this.strCityOfIssue = strCityOfIssue;
	}
	public Date getExpiryDate() {
		return expiryDate;
	}
	public void setExpiryDate(Date expiryDate) {
		this.expiryDate = expiryDate;
	}
	public String getStrFamilyName() {
		return strFamilyName;
	}
	public void setStrFamilyName(String strFamilyName) {
		this.strFamilyName = strFamilyName;
	}
	public String getStrFatherName() {
		return strFatherName;
	}
	public void setStrFatherName(String strFatherName) {
		this.strFatherName = strFatherName;
	}
	public String getStrMotherName() {
		return strMotherName;
	}
	public void setStrMotherName(String strMotherName) {
		this.strMotherName = strMotherName;
	}
	public String getStrPreviousNationality() {
		return strPreviousNationality;
	}
	public void setStrPreviousNationality(String strPreviousNationality) {
		this.strPreviousNationality = strPreviousNationality;
	}
	public Date getDateOfBirth() {
		return dateOfBirth;
	}
	public void setDateOfBirth(Date dateOfBirth) {
		this.dateOfBirth = dateOfBirth;
	}
	public String getStrBirthPlace() {
		return strBirthPlace;
	}
	public void setStrBirthPlace(String strBirthPlace) {
		this.strBirthPlace = strBirthPlace;
	}
	
	public String getQualification() {
		return qualification;
	}
	public void setQualification(String qualification) {
		this.qualification = qualification;
	}
	public String getSpokenLanguage1() {
		return spokenLanguage1;
	}
	public void setSpokenLanguage1(String spokenLanguage1) {
		this.spokenLanguage1 = spokenLanguage1;
	}
	public String getSpokenLanguage2() {
		return spokenLanguage2;
	}
	public void setSpokenLanguage2(String spokenLanguage2) {
		this.spokenLanguage2 = spokenLanguage2;
	}
	public String getSpokenLanguage3() {
		return spokenLanguage3;
	}
	public void setSpokenLanguage3(String spokenLanguage3) {
		this.spokenLanguage3 = spokenLanguage3;
	}
	public String getStrCurentlyInUAE() {
		return strCurentlyInUAE;
	}
	public void setStrCurentlyInUAE(String strCurentlyInUAE) {
		this.strCurentlyInUAE = strCurentlyInUAE;
	}
	public String getStrCurrentVisaType() {
		return strCurrentVisaType;
	}
	public void setStrCurrentVisaType(String strCurrentVisaType) {
		this.strCurrentVisaType = strCurrentVisaType;
	}
	public String getStrCity() {
		return strCity;
	}
	public void setStrCity(String strCity) {
		this.strCity = strCity;
	}
	public String getStrZone() {
		return strZone;
	}
	public void setStrZone(String strZone) {
		this.strZone = strZone;
	}
	public String getStrBuilding() {
		return strBuilding;
	}
	public void setStrBuilding(String strBuilding) {
		this.strBuilding = strBuilding;
	}
	public String getStrTelephoneOffice() {
		return strTelephoneOffice;
	}
	public void setStrTelephoneOffice(String strTelephoneOffice) {
		this.strTelephoneOffice = strTelephoneOffice;
	}
	public String getStrTelephoneRisidence() {
		return strTelephoneRisidence;
	}
	public void setStrTelephoneRisidence(String strTelephoneRisidence) {
		this.strTelephoneRisidence = strTelephoneRisidence;
	}
	public String getStrEmirate() {
		return strEmirate;
	}
	public void setStrEmirate(String strEmirate) {
		this.strEmirate = strEmirate;
	}
	public String getStrPOBox() {
		return strPOBox;
	}
	public void setStrPOBox(String strPOBox) {
		this.strPOBox = strPOBox;
	}
	public String getStrStreet() {
		return strStreet;
	}
	public void setStrStreet(String strStreet) {
		this.strStreet = strStreet;
	}
	public String getStrFlatNO() {
		return strFlatNO;
	}
	public void setStrFlatNO(String strFlatNO) {
		this.strFlatNO = strFlatNO;
	}
	public String getStrTelephoneOfficeExtension() {
		return strTelephoneOfficeExtension;
	}
	public void setStrTelephoneOfficeExtension(String strTelephoneOfficeExtension) {
		this.strTelephoneOfficeExtension = strTelephoneOfficeExtension;
	}
	public String getStrAddressAbroad() {
		return strAddressAbroad;
	}
	public void setStrAddressAbroad(String strAddressAbroad) {
		this.strAddressAbroad = strAddressAbroad;
	}
	public String getStrStatus() {
		return strStatus;
	}
	public void setStrStatus(String strStatus) {
		this.strStatus = strStatus;
	}
	public String getVisaService() {
		return visaService;
	}
	public void setVisaService(String visaService) {
		this.visaService = visaService;
	}
	public String getVisaCharges() {
		return visaCharges;
	}
	public void setVisaCharges(String visaCharges) {
		this.visaCharges = visaCharges;
	}
	public String getTotalCharges() {
		return totalCharges;
	}
	public void setTotalCharges(String totalCharges) {
		this.totalCharges = totalCharges;
	}
	public String getBankGuarantee() {
		return bankGuarantee;
	}
	public void setBankGuarantee(String bankGuarantee) {
		this.bankGuarantee = bankGuarantee;
	}
	public String getPrepaidActAccount() {
		return prepaidActAccount;
	}
	public void setPrepaidActAccount(String prepaidActAccount) {
		this.prepaidActAccount = prepaidActAccount;
	}
	public String getPrepaidResAccount() {
		return prepaidResAccount;
	}
	public void setPrepaidResAccount(String prepaidResAccount) {
		this.prepaidResAccount = prepaidResAccount;
	}
	public String getBankGuaranteeBalance() {
		return bankGuaranteeBalance;
	}
	public void setBankGuaranteeBalance(String bankGuaranteeBalance) {
		this.bankGuaranteeBalance = bankGuaranteeBalance;
	}
	public String getAdminComments() {
		return adminComments;
	}
	public void setAdminComments(String adminComments) {
		this.adminComments = adminComments;
	}
	public String getWfStatus() {
		return wfStatus;
	}
	public void setWfStatus(String wfStatus) {
		this.wfStatus = wfStatus;
	}
	public String getGsEmpStatus() {
		return gsEmpStatus;
	}
	public void setGsEmpStatus(String gsEmpStatus) {
		this.gsEmpStatus = gsEmpStatus;
	}
	
}
